<html>
  <head>
    <title>操纵捆绑包</title>
  </head>
  <body>
    <script>
        /*
                        五、操纵捆绑包

                                 捆绑和缩小系统提供了一个可扩展和动态的系统来创建script和style包。它允许您扩展和操作现有的包。 
                                 
                                 
                                  1、添加全局CSS文件

                                                  例如，ABP定义了一个 "全局样式包"，它被添加到每一个页面（实际上是由主题添加到布局中）。

                                                  让我们在包文件的末尾添加一个自定义样式文件，这样我们就可以覆盖任何全局样式。

                                                  首先，创建一个CSS文件并将其定位在wwwroot内的文件夹中：

                                                  在文件中定义一些自定义CSS规则。例子：

                                                              .card-title {
                                                                  color: orange;
                                                                  font-size: 2em;
                                                                  text-decoration: underline;
                                                              }

                                                              .btn-primary {
                                                                  background-color: red;
                                                              }

                                                  然后将此文件添加到模块的ConfigureServices方法中的标准全局样式包中：

                                                              Configure<AbpBundlingOptions>(options =>
                                                              {
                                                                  options.StyleBundles.Configure(
                                                                      StandardBundles.Styles.Global, //The bundle name!
                                                                      bundleConfiguration =>
                                                                      {
                                                                          bundleConfiguration.AddFiles("/styles/my-global-styles.css");
                                                                      }
                                                                  );
                                                              });


                                  2、操作捆绑文件

                                             上面的示例将一个新文件添加到捆绑包中。如果您创建一个bundle贡献者类，您可以做更多事情。例子：
                                             
                                                          public class MyGlobalStyleBundleContributor : BundleContributor
                                                          {
                                                              public override void ConfigureBundle(BundleConfigurationContext context)
                                                              {
                                                                  context.Files.Clear();
                                                                  context.Files.Add("/styles/my-global-styles.css");
                                                              }
                                                          }    
                                                              
                                              然后你可以将贡献者添加到现有捆绑包中：

                                                          Conf igure<AbpBundlingOptions>(options =>
                                                          {
                                                              options.StyleBundles.Configure(
                                                                  StandardBundles.Styles.Global,
                                                                  bundleConfiguration =>
                                                                  {
                                                                      bundleConfiguration.AddContributors(typeof(MyGlobalStyleBundleContributor));
                                                                  }
                                                              );
                                                          });

                                              清除所有CSS文件不是一个好主意。在现实世界的场景中，您可以查找特定文件并将其替换为您自己的文件。




                                  3、为特定页面添加JavaScript

                                              上面的示例适用于添加到布局中的全局包。

                                              如果要为依赖模块内定义的特定页面添加CSS/JavaScript文件（或替换文件）怎么办？

                                              假设您想在用户进入身份模块的角色管理页面后运行JavaScript代码。

                                              首先，在wwwroot、Pages或Views文件夹下创建一个标准JavaScript文件。

                                              ABP默认支持在这些文件夹中添加静态资源）。我们更喜欢Pages/Identity/Roles文件夹来遵循约定：

                                              文件内容很简单：

                                                      $(function() {
                                                          abp.log.info('My custom role script file has been loaded!');
                                                      });

                                              然后将此文件添加到角色管理页面的捆绑包中：

                                                      Configure<AbpBundlingOptions>(options =>
                                                      {
                                                          options.ScriptBundles
                                                              .Configure(
                                                                  typeof(Volo.Abp.Identity.Web.Pages.Identity.Roles.IndexModel).FullName,
                                                                  bundleConfig =>
                                                                  {
                                                                      bundleConfig.AddFiles("/Pages/Identity/Roles/my-role-script.js");
                                                                  });
                                                      });

                                                  typeof(Volo.Abp.Identity.Web.Pages.Identity.Roles.IndexModel).FullName是获取角色管理页面包名称的安全方法。

                                                  （请注意，并非每个页面都定义了这样的页面包。它们仅在需要时定义。）

                                                  除了向页面添加新的CSS/JavaScript文件外，您还可以替换现有文件（通过定义捆绑贡献者）。

            */
    </script>
  </body>
</html>